﻿//#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>

#include "common.h"

//for (初始化数值; 条件判断; 调整)
//{ // 如果条件判断部分省略，默认恒成立，则会进入死循环
//	语句项1;
//	break / continue;
//	语句项2;
//	...
// 循序执行次序：只执行一次初始化数值。循环执行 条件判断—>大括号语句项->调整 直到条件不满足
//}

void for_test(int k)
{	// for 循环中的 break 和 continue
	for (k; k > 0; k--)
	{
		// 建议不要在循环语句体内部随意更改循环变量，以免循环不可控，注意条件数字尽量有意义
		if (3 == k)
			break;
		if (6 == k)
			continue;
		printf("%d ", k);
	}
	/*for (int j = 0; j < 10; j++) // C++ 也支持此种写法
		printf("哈哈\n"); // C99以后版本才支持次种写法，这种写法兼容性不高 */
}

void printf_num()
// 下面语句只打印 3 个 “哈哈”
{
	int n = 0;
	int m = 0;
	for (; n < 3; n++)
	{
		for (; m < 3; m++)
			// 说明：这里 m 没有初始化，当 m = 3 后停止循环
			printf("哈哈\n"); // 只被内层循环控制
	}
	// 所以上面的循环内外层一共循环 6 次，打印 3 个 “哈哈”
	// 所以建议初始化语句不要省略，避免循环不可控
}

void for_more()
// for 循环可以设置多个变量和多个变量的条件，多个变量之间用逗号隔开
{
	int a, b;
	for (a = 0, b = 0; a < 3 || b < 3; ++a, b++) // 注意运算规则 ++a 表示先加后赋值
		printf("我来了\n");
}